package com.hh.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hh.common.ErrorCode;
import com.hh.entity.domain.UserBehavior;
import com.hh.entity.enums.BehaviorType;
import com.hh.exception.ThrowUtils;
import com.hh.mapper.UserBehaviorMapper;
import com.hh.service.UserBehaviorService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * @author hanhui
 * @description 针对表【user_behavior】的数据库操作Service实现
 * @createDate 2025-07-25 21:40:38
 */
@Service
public class UserBehaviorServiceImpl extends ServiceImpl<UserBehaviorMapper, UserBehavior>
        implements UserBehaviorService {
    /**
     * 异步添加用户行为记录
     *
     * @param userId       用户ID
     * @param itemId       项目ID
     * @param behaviorType 行为类型
     */
    @Async  // 标记该方法为异步执行
    @Override  // 重写父类方法
    public void addBehavior(Long userId, Long itemId, int behaviorType) {
        // 参数校验：如果userId为空，抛出参数为空异常
        ThrowUtils.throwIf(userId == null, ErrorCode.PARAMS_NULL);
        // 参数校验：如果itemId为空，抛出参数为空异常
        ThrowUtils.throwIf(itemId == null, ErrorCode.PARAMS_NULL);

        // 创建用户行为对象
        UserBehavior userBehavior = new UserBehavior();
        // 设置用户ID
        userBehavior.setUserId(userId);
        // 设置项目ID
        userBehavior.setItemId(itemId);
        // 设置行为类型为"点赞"
        userBehavior.setBehaviorType(BehaviorType.LIKE.getValue());
        // 设置行为时间戳为当前时间
        userBehavior.setTimestamp(new Date());
        // 保存用户行为记录
        this.save(userBehavior);
    }
}




